/** * */ package com.github.mrcritical.ironcache.internal.http; import java.io.IOException; import java.net.ProxySelector; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpHead; import org.apache.http.client.methods.HttpOptions; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.client.methods.HttpTrace; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.impl.client.cache.CachingHttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.impl.conn.SystemDefaultRoutePlanner; import com.google.api.client.http.HttpMethods; import com.google.api.client.http.HttpTransport; import com.google.api.client.http.LowLevelHttpRequest; /** * @author pjarrell * */ public class ApacheHttpTransport extends HttpTransport { private final CloseableHttpClient httpClient; public ApacheHttpTransport() { this(CachingHttpClients.custom().disableRedirectHandling() .setRetryHandler(new DefaultHttpRequestRetryHandler(0, false)) .setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault())) .setConnectionManager(new PoolingHttpClientConnectionManager()).build()); } public ApacheHttpTransport(CloseableHttpClient httpClient) { this.httpClient = httpClient; } /* * (non-Javadoc) * * @see * com.google.api.client.http.HttpTransport#buildRequest(java.lang.String, * java.lang.String) */ @Override protected LowLevelHttpRequest buildRequest(String method, String url) throws IOException { HttpRequestBase requestBase; if (method.equals(HttpMethods.DELETE)) { requestBase = new HttpDelete(url); } else if (method.equals(HttpMethods.GET)) { requestBase = new HttpGet(url); } else if (method.equals(HttpMethods.HEAD)) { requestBase = new HttpHead(url); } else if (method.equals(HttpMethods.POST)) { requestBase = new HttpPost(url); } else if (method.equals(HttpMethods.PUT)) { requestBase = new HttpPut(url); } else if (method.equals(HttpMethods.TRACE)) { requestBase = new HttpTrace(url); } else if (method.equals(HttpMethods.OPTIONS)) { requestBase = new HttpOptions(url); } else { requestBase = new HttpExtensionMethod(method, url); } return new ApacheHttpRequest(httpClient, requestBase); } /* * (non-Javadoc) * * @see com.google.api.client.http.HttpTransport#shutdown() */ @Override public void shutdown() throws IOException { httpClient.close(); } /* * (non-Javadoc) * * @see * com.google.api.client.http.HttpTransport#supportsMethod(java.lang.String) */ @Override public boolean supportsMethod(String method) throws IOException { return true; } }